Systems and methods for generating dynamic instructions for database querying and data retrieval

ABSTRACT

A data retrieval system can include a computing device that is configured to, in response to receiving a uniform resource locator from a user device, parse the uniform resource locator to identify a dynamic path variable. The computing device can be configured to generate a set of execution steps based on the received uniform resource locator. The computing device can also be configured to execute the set of execution steps to retrieve a set of data, the set of execution steps being executed based on the dynamic path variable in response to the dynamic path variable being identified. The computing device can further be configured to transform a user interface of the user device based on the set of data.

TECHNICAL FIELD

The disclosure relates generally to systems and methods for generatingdynamic instructions for database querying and data retrieval.

BACKGROUND

Today, most backend development efforts include operations to accessdata included in particular databases. To achieve that, each project orteam is building an application to perform operations that involvesdefining the payload, coding, testing, implementation, and support.Therefore, completing the application involves months of effort based onthe complexity of the application. Further, even if a new object isneeded in the response or an additional operation has to take place thenthe development team has to go through a solid amount of effort toachieve this. In multiple instances, the development team may choose tocreate an entirely new application.

The background description provided here is for the purpose of generallypresenting the context of the disclosure. Work of the presently namedinventors, to the extent it is described in this background section, aswell as aspects of the description that may not otherwise qualify asprior art at the time of filing, are neither expressly nor impliedlyadmitted as prior art against the present disclosure.

SUMMARY

The embodiments described herein are directed to a data retrieval systemand related methods. The data retrieval system can include a computingdevice that is configured to, in response to receiving a uniformresource locator from a user device, parse the uniform resource locatorto identify a dynamic path variable. The computing device can beconfigured to generate a set of execution steps based on the receiveduniform resource locator. The computing device can also be configured toexecute the set of execution steps to retrieve a set of data, the set ofexecution steps being executed based on the dynamic path variable inresponse to the dynamic path variable being identified. The computingdevice can further be configured to transform a user interface of theuser device based on the set of data.

In another aspect, generating the set of execution steps based on thereceived uniform resource locator includes retrieving a set ofinstructions from an instructions database, identifying a set of modelsincluded in the set of instructions, and generating the set of executionsteps based on the set of instructions and the set of models.

In another aspect, the computing device is configured to, in response toa first model of the set of models being independent of a second modelof the set of models, generate the set of execution steps correspondingto the first model and the second model in parallel.

In another aspect, the set of instructions includes input from the userdevice indicating: at least one database, the dynamic path variable, aquery string variable, a header value variable, or a request payloadvariable.

In another aspect, the set of instructions indicate data to retrievefrom at least one database, and the set of models indicate a location ofthe data to retrieve.

In another aspect, the set of execution steps are generated based on aset of instructions and a set of models selected via the user device.

In another aspect, the computing device is configured to store the setof data for a threshold period.

In various embodiments of the present disclosure, a method of retrievingdata is provided. In some embodiments, the method can include, inresponse to receiving a uniform resource locator from a user device,parsing the uniform resource locator to identify a dynamic pathvariable. The method also includes generating a set of execution stepsbased on the received uniform resource locator. The method can furtherinclude executing the set of execution steps to retrieve a set of data,the set of execution steps being executed based on the dynamic pathvariable in response to the dynamic path variable being identified. Themethod can also include transforming a user interface of the user devicebased on the set of data.

In various embodiments of the present disclosure, a non-transitorycomputer readable medium is provided. The non-transitory computerreadable medium can have instructions stored thereon, wherein theinstructions, when executed by at least one processor, cause a device toperform operations that include, in response to receiving a uniformresource locator from a user device, parsing the uniform resourcelocator to identify a dynamic path variable. The operations can alsoinclude generating a set of execution steps based on the receiveduniform resource locator. The operations can further include executingthe set of execution steps to retrieve a set of data, the set ofexecution steps being executed based on the dynamic path variable inresponse to the dynamic path variable being identified. The operationscan additionally include transforming a user interface of the userdevice based on the set of data.

BRIEF DESCRIPTION OF THE DRAWINGS

The features and advantages of the present disclosures will be morefully disclosed in, or rendered obvious by, the following detaileddescriptions of example embodiments. The detailed descriptions of theexample embodiments are to be considered together with the accompanyingdrawings wherein like numbers refer to like parts and further wherein:

FIG. 1 is a block diagram of a data retrieval system in accordance withsome embodiments;

FIG. 2 is a block diagram of a computing device implementing the dataretrieval device of FIG. 1 in accordance with some embodiments;

FIGS. 3A and 3B are example user interfaces of the data retrieval deviceof FIG. 1 in accordance with some embodiments;

FIG. 4 is a block diagram illustrating an example of a link generationmodule of the data retrieval device of FIG. 1 in accordance with someembodiments;

FIG. 5 is a block diagram illustrating an example of a code executionmodule of the data retrieval device of FIG. 1 in accordance with someembodiments;

FIG. 6 is a flowchart of example methods of generating a unique URL inaccordance with some embodiments; and

FIG. 7 is a flowchart of example methods of retrieval of dynamicinformation in accordance with some embodiments.

DETAILED DESCRIPTION

The description of the preferred embodiments is intended to be read inconnection with the accompanying drawings, which are to be consideredpart of the entire written description of these disclosures. While thepresent disclosure is susceptible to various modifications andalternative forms, specific embodiments are shown by way of example inthe drawings and will be described in detail herein. The objectives andadvantages of the claimed subject matter will become more apparent fromthe following detailed description of these exemplary embodiments inconnection with the accompanying drawings.

It should be understood, however, that the present disclosure is notintended to be limited to the particular forms disclosed. Rather, thepresent disclosure covers all modifications, equivalents, andalternatives that fall within the spirit and scope of these exemplaryembodiments. The terms “couple,” “coupled,” “operatively coupled,”“connected,” “operatively connected,” and the like should be broadlyunderstood to refer to connecting devices or components together eithermechanically, electrically, wired, wirelessly, or otherwise, such thatthe connection allows the pertinent devices or components to operate(e.g., communicate) with each other as intended by virtue of thatrelationship.

To streamline and to automate the creation of backend web applicationprogramming interfaces (APIs), a data retrieval system creates a dataretrieval application or built code instantly accessible by a uniqueuniform resource location (URL). The unique URL may include a dynamicpath variable, allowing the user entering the unique URL to identify adifferent dynamic variable in the unique URL path. Further, dynamicvariable may be in the path of the unique URL along with in a querystring, a header, a request/response variable, etc. that modify dataretrieval models to obtain data within certain parameters, based on aparticular name, etc., without having to build a new data retrievalapplication. That is, the dynamic path variable and dynamic variablesallow for transformation of variables in the path, header, query string,request and response sections to format dates, convert strings tonumerics, encode to/from base64 for binary data and special encoding fordifferent code pages.

The data retrieval system receives user input through a user device fromwhich the data retrieval application is generated. For example, the dataretrieval system receives database connection information, usercredentials, data retrieval models to operate, a set of retrievalinstructions, and the unique URL to generate the data retrievalapplication, which operates based on built execution steps.

In various implementations, the database connection information may bein the form of Java Database Connectivity (JBDC) strings that connectthe data retrieval system to a plurality of databases from which datacan be retrieved. Further, the user credentials can be specific to theuser, such as a user identifier and a corresponding password or acertificate with a passphrase. Particular users may only have access tocertain data within the plurality of databases; therefore, the provideduser credentials offer the user access to that data and thecorresponding databases. The data retrieval models may be presetdefinitions, for example, a set of structured query languages (SQLs),that indicate what is being obtained from the query. For example, aninvoice SQL definition may be named “invoice” and include the followingin the SQL definition:

select invoice_date from invoice where invoice_id = :path.invoiceId

In the above example, the SQL definition indicates that when the set ofinstructions implements the invoice SQL, the invoice SQL will obtain orselect the “invoice_date” from an “invoice” data structure based on thedynamic path variable which is going to indicate what “invoice_id” toquery. The set of instructions may be in the form of JavaScript ObjectNotation (JSON) request and response payloads. Here, for example, theset of instructions in JSON would be: “invoiceDate”:“{invoice.invoice_date}”. In various implementations, when the set ofinstructions are surrounded by “{” and “}”, the data retrieval systemunderstands that the instruction is indicating single row processing,meaning a single row of data is being retrieved (here, theinvoice_date). Alternatively, if the set of instructions are surroundedby “[” and “]”, the data retrieval system understands that theinstruction is indicating an array of values is being requested andallows for multiple rows to be returned from the request.

An example of multiple row processing may include an invoice SQLdefinition of:

select invoice_id, vendor_nbr from invoice where invoice_date =:path.invoiceDate

The set of instructions in JSON would then include:

[  {   “invoiceId” : “{invoice.invoice_id}”,   “vendorNbr” :“{invoice.vendor_nbr}”  } ]

For example, in the above example, upon entering the correspondingunique URL with the dynamic path variable, the data retrieval systemwould return an invoice_id and a vendor_nbr included in the invoice datastructure that corresponds to the input invoiceDate (input as thedynamic path variable), allowing the user to change which invoiceDate isentered (retrieving different information) without having to create anew set of instructions and building a new data retrieval application.

In various implementations, the set of instructions may also be presetrequest and response payloads in JSON that the user can select whengenerating their querying code. The user can then make any adjustmentsto the querying code in JSON to define which data retrieval models willbe invoked. The user also provides the unique URL including the dynamicpath variable that the user can change when entering the unique URL todefine, for example, as shown above a different “invoice_id” of thefirst example and a different “invoice_date” in the second example.

As noted above, the data retrieval system builds execution steps of thedata retrieval application based on the set of instructions and the dataretrieval models that the user selects and adjusts within a codegeneration user interface. For example, the data retrieval applicationof the above second example showing multiple row processing may includethe following execution steps:

1. Initialize buffers 2. Execute “invoice” model (SQL definition) 3.Read “invoice” model row 4. Write “[” text 5. Write “{” text 6. Write“invoice_id” from query 7. Write “vendor_nbr” from query 8. Write “}”text 9. Read “invoice” model row, if additional data return to 5 10.Write “]” text 11. Write buffer 12. End service

The execution steps or built code indicates instructions for dataretrieval. In various implementations, the execution of the executionsteps may store the data retrieved as a result of the execution steps ina local memory as well as with the execution steps. That is, the dataretrieval system generates a unique URL linking the system to the set ofinstructions to build or generate the executions steps at runtime orwhen the unique URL is submitted. The retrieved data of the unique URL,also known as the response payload, may be stored in a local memory fora set amount of time (as indicated in a link request) to store theretrieved data locally for simplicity of future retrieval. For example,if the execution steps instruct the retrieval of a set of invoices froma particular date, after the steps are executed, the set of invoices isstored in the local memory for future retrieval if the system requeststhe set of invoices on the particular date again. Through the codegeneration user interface, the user may indicate a cache time frameindicating how long to store the retrieved data for later use (by theuser entering the unique URL) in the local memory. For example, thecache time frame may indicate a number of hours to store the executionsteps, a time at which to purge the database of the execution steps,etc.

Additionally, the user may customize the isolation levels of the dataretrieval models, define acceptable errors when the models are executedin order to pass on to the next statements, chain data retrieval modelsbased on events including on success, on duplicate, on not found, etc.Further, the data retrieval system may operate in a first dynamicprocessing mode that passes one or more data retrieval models or in asecond instant processing mode that defines custom sets of instructions(such as custom request and response payloads) that execute one or moredata retrieval models according to the custom set of instructions ordefined data structures.

That is, in the first dynamic processing mode, the code generationinterface offers predefined models for the data retrieval models as wellas predefined sets of instructions (for example, GET, PUT, POST, DELETEoperations offered in REST APIs). Additionally, the data retrievalmodels may be executed serially (consecutively), threaded (in parallel),or using a unit of work mode. Executing serially would occur when a dataretrieval model is dependent on data retrieved from another model.Therefore, the data retrieval models would operate in a particular orderand not in parallel. Executing in a threaded manner would occur wheneach data retrieval model operates independent of the other and does notrequire any data retrieved from another model, improving response timesof the data retrieval system. Implementing the unit of work option wouldexecute the data retrieval models serially, allowing the data retrievalsystem to undo or rollback changes if a particular data retrieval modelis not successful.

In the second processing mode, the data retrieval system providesmanipulation of the data retrieval models, the sets of instructions, andthe dynamic path variable provided in the unique URL. For example, asshown above, the dynamic path variable included at the end of the uniqueURL may replace or define variables in the data retrieval models.Further, the dynamic path variable can include special directivesindicated by a tilde. These special directives may include: “˜={value}”,which directs the “where” statement in the data retrieval model thatcolumn_name={value}; “˜>{value}”, which directs he “where” statement inthe data retrieval model that column_name>{value}; “˜<{value}”, whichdirects the “where” statement in the data retrieval model thatcolumn_name<{value}; “˜>={value}”, which directs the “where” statementin the data retrieval model that column_name>={value}; “˜<={value}”,which directs the “where” statement in the data retrieval model thatcolumn_name<={value}; “˜[{value}, {value}, {value}]”, which directs the“where” statement in the data retrieval model that column_name in({value}, {value}, {value }); “˜<{value1}, {value2}>”, which directs the“where” statement in the data retrieval model that column_name thatbetween {value1} and {value2}; “˜!{value}”, which directs the “where”statement in the data retrieval model that column_name NOT={value}; “˜%{value}”, which directs the “where” statement in the data retrievalmodel that column_name like {value}; and “{{column_name=:path.value}}”,is the path directive modifier in the data retrieval model.

Moreover, the data retrieval system may execute interconnected datamapping of the set of instructions. That is, the set of instructions canconnect multiple defined data maps by indicating in map directives tomap or input indicated data to a particular data structure.Additionally, the set of instructions may include special directives,such as “˜null_on_empty” or “˜drop_on_empty”.

The data retrieval system can also generate a plurality of unique URLsand different versions of the data retrieval applications. The set ofinstructions can also indicate in a retrieval path from which databaseto retrieve the data, providing the option of the set of instructionsaccessing multiple databases in a single set of execution steps. Thatis, a first instruction of the set of instructions references a firstdatabase while a second instruction of the set of instructionsreferences a second database. The database may also be indicated in theunique URL.

Additional special directives may be included in the set of instructionsindicating formatting information, such as “˜number” indicating to thedata retrieval system to override default formatting and return anystring in a number form. Another special directive may be“˜o_datetime(‘YYYYMMDD’)” indicating date format. In variousimplementations, the data retrieval system also includes user-selectablelinks on the code generation user interface to allow the data retrievalapplication to be promoted from a test environment to QA to production,which may seamlessly update environment based definitions according tothe updated environment.

Moreover, each data retrieval application created using the dataretrieval system may have multiple versions. In various implementations,a particular data retrieval application may have multiple versions andone of those versions is identified as a default version of theparticular data retrieval application. Each version of the particulardata retrieval application may also be promoted from the testenvironment to QA to production upon selection of a user-selectable linkor icon to promote the version. Further, another user-selectable button,for example a GLOB button, may be arranged next to each version andselected to set that particular version as the default version of thatparticular data retrieval application. For example, a newest version maybe selected as a default version, but, if the newest version producesunintended results, the user may set an earlier version as the defaultversion. While a user can access any version by indicating a versionnumber in the unique URL path, when a version is set as the defaultversion, the default version is automatically selected when a versionnumber is excluded from the unique URL path. In various implementations,the data retrieval system may automatically upgrade or backout of thedata retrieval application.

Referring to FIG. 1 , a block diagram of a data retrieval system 100 isshown. The data retrieval system 100 may include a data retrieval device102 and a user device 104, such as a phone, tablet, laptop, mobilecomputing device, desktop, etc., that interacts with the data retrievaldevice 102 via a distributed communications system 108. A user mayinteract with a code generation module 112 that displays a codegeneration user interface on the user device 104 allowing the user tocombine data retrieval models and sets of instructions. In variousimplementations, the code generation module 112 may retrieve predefineddata retrieval models (and in some instances predefined sets ofinstructions) in a model database 116. As mentioned previously, invarious implementations, the user may access the predefined modelsand/or instructions via the code generation module 112 and modify ormanipulate the predefined models and/or instructions for a personalizeddata retrieval application.

A user may also enter their own set of instructions on the codegeneration user interface via the user device 104 and call the dataretrieval models to create the data retrieval application. In variousimplementations, prior to the execution steps of the data retrievalapplication being built, the data retrieval device 102 may store the setof instructions and identified data retrieval models in a pre-builtdatabase 120. In various implementations, a link generation module 124can combine the unique set of instructions and identified data retrievalmodels from the pre-built database 120 to associate the unique set ofinstructions and data retrieval models of the data retrievalapplication. Then, the link generation module 124 can create a uniqueURL that, when submitted, links to the created, unique set ofinstructions included in the pre-built database 120. Upon submission ofthe unique URL, a code execution module 132 may generate or build, atruntime, the execution steps based on the unique set of instructionslinked to the unique URL. In various implementations, the code executionmodule 132 may check a local memory 128 to determine if the unique URLwas previously entered or submitted and the execution steps were builtand stored in the local memory 128. Upon receiving the user-enteredunique URL, the data retrieval device 102 executes the correspondingexecution steps (and if necessary, builds those execution steps atruntime) of the data retrieval application and obtains the indicateddata from one of the indicated databases, such as database 1, 136-1,database 2, 136-2, . . . , and/or database N, 136-N.

The data retrieval device 102 and the user device 104 can each be anysuitable computing device that includes any hardware or hardware andsoftware combination for processing and handling information. Forexample, the term “device” and/or “module” can include one or moreprocessors, one or more field-programmable gate arrays (FPGAs), one ormore application-specific integrated circuits (ASICs), one or more statemachines, digital circuitry, or any other suitable circuitry. Inaddition, each can transmit data to, and receive data from, thedistributed communications system 108. In various implementations, thedevices, modules, and databases may communicate directly on an internalnetwork.

As indicated above, the data retrieval device 102 and/or the user device104 can be a computer, a workstation, a laptop, a server such as acloud-based server, or any other suitable device. In some examples, theuser device 104 can be a cellular phone, a smart phone, a tablet, apersonal assistant device, a voice assistant device, a digitalassistant, a laptop, a computer, or any other suitable device. Invarious implementations, the data retrieval device 102, including allthe modules and databases, is on a central computing system that isoperated and/or controlled by a retailer. The data retrieval device 102may include modules to execute purchases for items selected by customersusing the user device 104. Additionally or alternatively, the modulesand databases of the data retrieval device 102 are distributed among oneor more workstations or servers that are coupled together over thedistributed communications system 108.

The databases described can be remote storage devices, such as acloud-based server, a memory device on another application server, anetworked computer, or any other suitable remote storage. Further, insome examples, the databases can be a local storage device, such as ahard drive, a non-volatile memory, or a USB stick.

The distributed communications system 108 can be a WiFi® network, acellular network such as a 3GPP® network, a Bluetooth® network, asatellite network, a wireless local area network (LAN), a networkutilizing radio-frequency (RF) communication protocols, a Near FieldCommunication (NFC) network, a wireless Metropolitan Area Network (MAN)connecting multiple wireless LANs, a wide area network (WAN), or anyother suitable network. The distributed communications system 108 canprovide access to, for example, the Internet.

The user device 104 may communicate with the data retrieval device 102over the distributed communications system 108. For example, the dataretrieval device 102 may host one or more websites. The user device 104may be operable to view, access and interact with the websites hosted bythe data retrieval device 102, such as the code generation userinterface generated by the code generation module 112.

FIG. 2 illustrates an example computing device 200. The data retrievaldevice 102 and/or the user device 104 may include the features shown inFIG. 2 . For the sake of brevity, FIG. 2 is described relative to thedata retrieval device 102.

As shown, the data retrieval device 102 can be a computing device 200that may include one or more processors 202, working memory 204, one ormore input/output devices 206, instruction memory 208, a transceiver212, one or more communication ports 214, and a display 216, alloperatively coupled to one or more data buses 210. Data buses 210 allowfor communication among the various devices. Data buses 210 can includewired, or wireless, communication channels.

Processors 202 can include one or more distinct processors, each havingone or more cores. Each of the distinct processors can have the same ordifferent structure. Processors 202 can include one or more centralprocessing units (CPUs), one or more graphics processing units (GPUs),application specific integrated circuits (ASICs), digital signalprocessors (DSPs), and the like.

Processors 202 can be configured to perform a certain function oroperation by executing code, stored on instruction memory 208, embodyingthe function or operation. For example, processors 202 can be configuredto perform one or more of any function, method, or operation disclosedherein.

Instruction memory 208 can store instructions that can be accessed(e.g., read) and executed by processors 202. For example, instructionmemory 208 can be a non-transitory, computer-readable storage mediumsuch as a read-only memory (ROM), an electrically erasable programmableread-only memory (EEPROM), flash memory, a removable disk, CD-ROM, anynon-volatile memory, or any other suitable memory.

Processors 202 can store data to, and read data from, working memory204. For example, processors 202 can store a working set of instructionsto working memory 204, such as instructions loaded from instructionmemory 208. Processors 202 can also use working memory 204 to storedynamic data created during the operation of the data retrieval device102. Working memory 204 can be a random access memory (RAM) such as astatic random access memory (SRAM) or dynamic random access memory(DRAM), or any other suitable memory.

Input/output devices 206 can include any suitable device that allows fordata input or output. For example, input-output devices 206 can includeone or more of a keyboard, a touchpad, a mouse, a stylus, a touchscreen,a physical button, a speaker, a microphone, or any other suitable inputor output device.

Communication port(s) 214 can include, for example, a serial port suchas a universal asynchronous receiver/transmitter (UART) connection, aUniversal Serial Bus (USB) connection, or any other suitablecommunication port or connection. In some examples, communicationport(s) 214 allows for the programming of executable instructions ininstruction memory 208. In some examples, communication port(s) 214allow for the transfer (e.g., uploading or downloading) of data, such asquery/search results and customer interaction data.

Display 216 can display a user interface 218. User interface 218 canenable user interaction with the data retrieval device 102. For example,user interface 218 can be a user interface that allows an operator tointeract, communicate, control and/or modify different features orparameters of the data retrieval device 102. The user interface 218 can,for example, display the performance of the data retrieval device 102using different textual, graphical or other types of graphs, tables orthe like. In some examples, a user can interact with user interface 218by engaging input/output devices 206. In some examples, display 216 canbe a touchscreen, where user interface 218 is displayed on thetouchscreen.

Transceiver 212 allows for communication with a network, such as thedistributed communications system 108 of FIG. 1 . For example, if thedistributed communications system 108 of FIG. 1 is a cellular network,transceiver 212 is configured to allow communications with the cellularnetwork. In some examples, transceiver 212 is selected based on the typeof distributed communications system 108 in which the data retrievaldevice 102 will be operating. Processor(s) 202 is operable to receivedata from, or send data to, a network, such as the distributedcommunications system 108 of FIG. 1 , via transceiver 212.

Referring now to FIGS. 3A and 3B, example user interfaces of the dataretrieval device of FIG. 1 are shown. A first user interface 300 depictsgeneration of a data retrieval application. In particular, the firstuser interface 300 shows data retrieval model selection and option formanipulation or inclusion of conditions. The first user interface 300shows the inclusion of an insert data retrieval model and an update dataretrieval model. Specifically, the insert data retrieval model is shownto be connected to “db2” database and chained to the update dataretrieval model, specifying an update instruction of the data retrievalapplication as a result of a duplicate data. That is, if the executionof the insert instruction of the generated execution steps results in aduplicated, for example, row, the data retrieval application will issuean error. However, since the insert data retrieval model is chained toupdate the manipulated data if a duplicate is identified, an error willnot issue. The first user interface 300 also includes a text alterationarea where the user can interact with the user interface and change thedata retrieval model, for example, to change a variable name or includea special direction, etc.

A second user interface 308 depicts generation of a set of instructionsof the data retrieval application. The second user interface 308 showswhere a user can alter a unique URL 312, select a caching option 316, aswell as define a response payload 320. The second user interface 308 mayalso include a text alteration area where the user can adjust the set ofinstructions to change variable definitions and create a unique dataretrieval application.

Referring now to FIG. 4 , a block diagram illustrating an example of thelink generation module 124 of the data retrieval device 102 of FIG. 1 isshown. The link generation module 124 includes a pre-built retrievalmodule 404 that obtains the set of instructions and data retrievalmodels for the data retrieval application corresponding to the promptinglink request. For example, on the code generation user interface, theuser has selected a link or build button to instruct the data retrievaldevice 102 to generate a unique URL linking to the data retrievalapplication. The obtained pre-built data retrieval application isforwarded to a link generation module 420. The link generation module420 generates the unique URL based on the user indicated unique URL andassociates the unique URL with the set of instructions, which includesthe data retrieval models that the user may have changed based onspecific data retrieval information used in this particular application.The link generation module 420 forwards the unique URL to a display ofthe user device. In various implementations, the unique URL points tothe set of instructions, which indicate instructions and/or adjustmentsto the data retrieval models stored in the pre-built database 120. Thepre-built retrieval module 404 may also update or generate unique setsof instructions stored in the pre-built database 120 that the unique URLis associated with so that when the unique URL is submitted or enteredby a user, the unique set of instructions (adjusted data retrievalmodels) are executed to build executions steps at runtime (which alsomay be stored in the local memory 128).

Referring now to FIG. 5 , a block diagram illustrating an example of thecode execution module 132 of the data retrieval device 102 of FIG. 1 isshown. The code execution module 132 includes an instructions retrievalmodule 504 that, in response to receiving a link, such as the uniqueURL, retrieves the set of instructions (along with any indicated dataretrieval models) associated with the unique URL. The instructionsretrieval module 504 forwards the unique URL to a path parsing module508. The path parsing module 508 identifies a dynamic variable includedin the unique URL path to pass to the execution steps. As describedpreviously, the user is able to input different dynamic variables intothe unique URL path to retrieve data using the same data retrievalapplication but from a different, for example, document ID (or invoiceID). This allows the user to use the same data retrieval application toobtain data for a variety of different variables (documents or evenincluding a dynamic variable corresponding to a different type of dataretrieved) without the user creating a new data retrieval application.

In various implementations, the instructions retrieval module 504 mayalso check the local memory 128 (not shown), in response to a link, fora previously loaded unique URL stored from a previous session where codewas built and stored in the local memory 128 (not shown) for executionof the locally stored execution steps. Once the set of instructions areretrieved, the set of instructions is sent to an order determinationmodule 512. The order determination module 512 analyzes any dependenciesexisting in the set of instructions included in the pre-built dataretrieval application. For example, if there are no dependencies (thatis, a second data retrieval model does not need data obtained by a firstretrieval model), the order determination module 512 may indicate to astep generation module 516 to execute the data retrieval models inparallel to reduce processing time. Further, if the order determinationmodule 512 determines that a referenced data retrieval model depends ondata from a different data retrieval model, the order determinationmodule 512 may indicate to the step generation module 516 to generateexecution steps serially.

The step generation module 516 generates the execution steps for thepre-built data retrieval application. The execution steps are forwardedto a cache determination module 520. Based on user input included in thelink request of FIG. 4 and indicated by the unique URL, the cachedetermination module 520 determines an amount of time to store theresponse payload (that is, retrieved data). As mentioned previously, thecache user input may indicate to store response payload until a certaintime point, for a specific amount of time, etc.

The execution steps, order determination, cache determination, and thedynamic variable are forwarded to a step execution module 524. The stepexecution module 524 may update the execution steps to include thedynamic variable and execute the steps, obtaining indicated data from anindicated database (such as database 1 136-1, database 2 136-2, . . . ,database N 136-N. The retrieved data is forwarded to a data displaymodule 528 to display the obtained data on the user device to the user.

Referring now to FIG. 6 , a flowchart of example methods of generating aunique URL is shown. Control begins upon user navigation to an initialcode generation screen, for example, a first screen or user interface ona user device generated by the code generation module. Then, controlcontinues to 602 to determine if database details were received from theuser via the user interface. If no, control continues to 604 todetermine if an existing data selection was received. That is, if adatabase has previously been connected, the user interface may include adropdown menu or a set of database selections from which the user mayselect. If a database selection is not received, control returns to 602to wait for database information. If a database selection is received,control proceeds to 608 to select the database selection and proceed to612 to receive user input credentials.

For example, a user may input a user ID and password to indicatedatabase access details. Returning to 602, if database details arereceived from the user, control continues to 616 to create a databasereference based on the received details and continues to 612. Controlproceeds to 620 to store user credentials and returns a globally uniqueidentifier (GUID) that may be indicated in the generated unique URL toidentify the data retrieval application being created. Control proceedsto 624 to generate a code generation user interface (for example, asshown in FIGS. 3A and 3B). Control proceeds to 628 to receive user inputlink path (unique URL), set of instructions for data retrieval, and dataretrieval model references, which are also included in the set ofinstructions. Control continues to 632 to wait for a link request to bereceived via the code generation user interface.

Once the link request is received, control proceeds to 636 to validateuser input. Validation of the user input includes analyzing the set ofinstructions and data retrieval models (including any specialdirectives) to determine if any errors would result or the instructionscould not be executed (for example, check dynamic variables that useregular expressions and conditional checks to determine if the dynamicvariables indicate a range when needed, etc.). At 640, controldetermines if validation is successful. If no, control continues to 644to generate and display an error message. Then, control ends. Otherwise,if at 640, validation is successful, control proceeds to 656 to generatethe unique URL based on the user input link path and display the uniqueURL to the user on the user interface of the user device. Then, controlends.

Referring now to FIG. 7 , a flowchart of example methods of retrieval ofdynamic information is shown. Control begins in response to receiving alink (that is, the unique URL). Control continues to 704 to determine ifthe corresponding execution steps of the data retrieval applicationassociated with the link are stored in local memory. If yes, controlcontinues to 708 to obtain the stored execution steps from local memoryof the data retrieval application. Then, control proceeds to 712 toparse the path included in the link to identify dynamic variables.Returning to 704, if the execution steps are not stored, controlproceeds to 716 to retrieve user instructions (that is, the pre-builtdata retrieval application including the sets of instructions and dataretrieval models associated with the received link/unique URL). Then,control continues to 720 to determine operation order (that is, seriallyor in parallel) based on dependency within the instructions and models.Control continues to 724 to build executions steps based on determineddependency and user instructions (that is, the sets of instructions anddata retrieval models associated with the received link/unique URL).Control then returns to 712. Once the dynamic variables are parsed fromthe link, control proceeds to 728 to execute the steps based on theidentified dynamic variables to retrieve indicated data.

Control continues to 732 to determine if a cache instruction wasindicated based on the instructions associated with the received link.If yes, control continues to 736 to store the retrieved indicated databased on the cache instructions in the local memory. For example, asmentioned previously, the retrieved indicated data may be stored for 24hours, until 6 am, etc. In various implementations, absent cacheinstructions, a default cache time, for example, 12 hours, may beapplied to the retrieved indicated data. Then, control proceeds to 740,which control also proceeds to if a cache instruction is not indicated,to store the built execution steps in the local memory as associatedwith the received link. Therefore, if the received link is submitted bya user again, control may obtain the execution steps from the localmemory instead of re-building the execution steps. In variousimplementations, the execution steps may not be stored and built eachtime the received link is submitted. Control continues to 744 totransform a user interface of the user device with the retrieved data.

Although the methods described above are with reference to theillustrated flowcharts, it will be appreciated that many other ways ofperforming the acts associated with the methods can be used. Forexample, the order of some operations may be changed, and some of theoperations described may be optional.

In addition, the methods and system described herein can be at leastpartially embodied in the form of computer-implemented processes andapparatus for practicing those processes. The disclosed methods may alsobe at least partially embodied in the form of tangible, non-transitorymachine-readable storage media encoded with computer program code. Forexample, the steps of the methods can be embodied in hardware, inexecutable instructions executed by a processor (e.g., software), or acombination of the two. The media may include, for example, RAMs, ROMs,CD-ROMs, DVD-ROMs, BD-ROMs, hard disk drives, flash memories, or anyother non-transitory machine-readable storage medium. When the computerprogram code is loaded into and executed by a computer, the computerbecomes an apparatus for practicing the method. The methods may also beat least partially embodied in the form of a computer into whichcomputer program code is loaded or executed, such that, the computerbecomes a special purpose computer for practicing the methods. Whenimplemented on a general-purpose processor, the computer program codesegments configure the processor to create specific logic circuits. Themethods may alternatively be at least partially embodied in applicationspecific integrated circuits for performing the methods.

The term model as used in the present disclosure includes data modelscreated using machine learning. Machine learning may involve training amodel in a supervised or unsupervised setting. Machine learning caninclude models that may be trained to learn relationships betweenvarious groups of data. Machine learned models may be based on a set ofalgorithms that are designed to model abstractions in data by using anumber of processing layers. The processing layers may be made up ofnon-linear transformations. The models may include, for example,artificial intelligence, neural networks, deep convolutional andrecurrent neural networks. Such neural networks may be made of up oflevels of trainable filters, transformations, projections, hashing,pooling and regularization. The models may be used in large-scalerelationship-recognition tasks. The models can be created by usingvarious open-source and proprietary machine learning tools known tothose of ordinary skill in the art.

The foregoing is provided for purposes of illustrating, explaining, anddescribing embodiments of these disclosures. Modifications andadaptations to these embodiments will be apparent to those skilled inthe art and may be made without departing from the scope or spirit ofthese disclosures.

What is claimed is:
 1. A system comprising: a computing deviceconfigured to, in response to receiving a uniform resource locator froma user device: parse the uniform resource locator to identify a dynamicpath variable; generate a set of execution steps based on the receiveduniform resource locator; execute the set of execution steps to retrievea set of data, the set of execution steps being executed based on thedynamic path variable in response to the dynamic path variable beingidentified; and transform a user interface of the user device based onthe set of data.
 2. The system of claim 1, wherein generating the set ofexecution steps based on the received uniform resource locator includes:retrieving a set of instructions from an instructions database;identifying a set of models included in the set of instructions; andgenerating the set of execution steps based on the set of instructionsand the set of models.
 3. The system of claim 2, wherein the computingdevice is configured to, in response to a first model of the set ofmodels being independent of a second model of the set of models,generate the set of execution steps corresponding to the first model andthe second model in parallel.
 4. The system of claim 2, wherein the setof instructions includes input from the user device indicating: at leastone database, the dynamic path variable, a query string variable, aheader value variable, or a request payload variable.
 5. The system ofclaim 2, wherein: the set of instructions indicate data to retrieve fromat least one database, and the set of models indicate a location of thedata to retrieve.
 6. The system of claim 1, wherein the set of executionsteps are generated based on a set of instructions and a set of modelsselected via the user device.
 7. The system of claim 1, wherein thecomputing device is configured to store the set of data for a thresholdperiod.
 8. A method comprising: in response to receiving a uniformresource locator from a user device, parsing the uniform resourcelocator to identify a dynamic path variable; generating a set ofexecution steps based on the received uniform resource locator;executing the set of execution steps to retrieve a set of data, the setof execution steps being executed based on the dynamic path variable inresponse to the dynamic path variable being identified; and transforminga user interface of the user device based on the set of data.
 9. Themethod of claim 8, wherein generating the set of execution steps basedon the received uniform resource locator includes: retrieving a set ofinstructions from an instructions database; identifying a set of modelsincluded in the set of instructions; and generating the set of executionsteps based on the set of instructions and the set of models.
 10. Themethod of claim 9, further comprising, in response to a first model ofthe set of models being independent of a second model of the set ofmodels, generating the set of execution steps corresponding to the firstmodel and the second model in parallel.
 11. The method of claim 9,wherein the set of instructions includes input from the user deviceindicating: at least one database, the dynamic path variable, a querystring variable, a header value variable, or a request payload variable.12. The method of claim 9, wherein: the set of instructions indicatedata to retrieve from at least one database, and the set of modelsindicate a location of the data to retrieve.
 13. The method of claim 8,wherein the set of execution steps are generated based on a set ofinstructions and a set of models selected via the user device.
 14. Themethod of claim 8, further comprising storing the set of data for athreshold period.
 15. A non-transitory computer readable medium havinginstructions stored thereon, wherein the instructions, when executed byat least one processor, cause a device to perform operations comprising,in response to receiving a uniform resource locator from a user device:parsing the uniform resource locator to identify a dynamic pathvariable; generating a set of execution steps based on the receiveduniform resource locator; executing the set of execution steps toretrieve a set of data, the set of execution steps being executed basedon the dynamic path variable in response to the dynamic path variablebeing identified; and transforming a user interface of the user devicebased on the set of data.
 16. The non-transitory computer readablemedium of claim 15, wherein generating the set of execution steps basedon the received uniform resource locator includes: retrieving a set ofinstructions from an instructions database; identifying a set of modelsincluded in the set of instructions; and generating the set of executionsteps based on the set of instructions and the set of models.
 17. Thenon-transitory computer readable medium of claim 16, wherein theinstructions include, in response to a first model of the set of modelsbeing independent of a second model of the set of models, generating theset of execution steps corresponding to the first model and the secondmodel in parallel.
 18. The non-transitory computer readable medium ofclaim 16, wherein the set of instructions includes input from the userdevice indicating: at least one database, the dynamic path variable, aquery string variable, a header value variable, or a request payloadvariable.
 19. The non-transitory computer readable medium of claim 16,wherein: the set of instructions indicate data to retrieve from at leastone database, and the set of models indicate a location of the data toretrieve.
 20. The non-transitory computer readable medium of claim 15,wherein the set of execution steps are generated based on a set ofinstructions and a set of models selected via the user device.